スコープ
スコープとは?
変数、定数、引数がスクリプト内のどこの場所から定義されているか、どこで値を参照できるかを決めるもの。概念
グローバルスコープとローカルスコープ
![](https://shinkairoom.com/wp/wp-content/uploads/2021/05/スクリーンショット-2021-05-29-20.33.03.jpg)
全体を参照…グルーバルスコープ(赤枠)
定義された関数の中で参照…ローカルスコープ(黄枠)
グローバルスコープでの変数…グローバル変数(赤点線枠)
ローカルスコープ内での変数…ローカル変数(黄点線枠)
![](https://shinkairoom.com/wp/wp-content/uploads/2021/05/スクリーンショット-2021-05-29-21.28.24-1-1024x450.jpg)
赤枠がグローバルスコープ
黄枠がローカルスコープ
![](https://shinkairoom.com/wp/wp-content/uploads/2021/05/スクリーンショット-2021-05-29-21.29.13-2-1024x450.jpg)
constの宣言を外すと変数が上書きされてしまいます
![](https://shinkairoom.com/wp/wp-content/uploads/2019/11/IMG_05231-e1574250285143.jpg)
エラーを防ぐためにconstもしくはletで宣言しておくクセをつけた方が良さそうですね!
ブロックスコープ
ブロックスコープ
ブロック({…})の範囲で変数が存在するスコープ
![](https://shinkairoom.com/wp/wp-content/uploads/2021/05/スクリーンショット-2021-05-30-9.26.53-1024x283.jpg)
青枠→出力
赤枠→出力 黄枠→出力
白枠(ブロックスコープ)→赤枠、黄枠がブロック内で出力できる有効範囲です
ブロック外で宣言をした緑枠→エラーになります
![](https://shinkairoom.com/wp/wp-content/uploads/2020/04/bird-2112724_1280.png)
ブロック内外で変数名が重なった場合はどうなるんだろう?
![](https://shinkairoom.com/wp/wp-content/uploads/2021/05/スクリーンショット-2021-05-30-9.54.13-1024x282.jpg)
![](https://shinkairoom.com/wp/wp-content/uploads/2019/11/IMG_05231-e1574250285143.jpg)
変数名が被ってもブロックで囲われているのでconsoleエラーになってないですね!
![](https://shinkairoom.com/wp/wp-content/uploads/2021/05/スクリーンショット-2021-05-30-10.10.26.jpg)
白枠内で赤枠を宣言してます
さらにその中の青枠でブロックスコープの宣言をしてもエラー起こってないですね!